Program WinApp;

uses  Windows,Messages;

var  WndCls   :WNDCLASSEX;  
         MainWnd:HWND;          
         Msg         :TMSG;           

Function WndProc (hWnd     : HWND; 
                                  nMsg      : UINT; 
                                  wParam, 
                                  lParam  : LongInt): LongInt; export; 
                                                                                      stdcall;
var
  dc: HDC;
  ps: TPaintStruct;

begin
   Result := 0;
   case nMsg of
       WM_CREATE         :MessageBox (hWnd,'Hello',
                                                          'Window Creating', MB_OK);        

        WM_LBUTTONDOWN:MessageBox (hWnd,'Hello',
                                                            'Left Mouse', MB_OK);

        WM_PAINT:begin
                              dc := BeginPaint (hWnd, ps);
                              TextOut(dc,10,10,'Hello World', 11);
                              EndPaint (hWnd, ps);
                          end;

        WM_DESTROY:PostQuitMessage (0);

  else
      Result := DefWindowProc (hWnd, nMsg, wParam, lParam);

  end;
end;

BEGIN
 
  WndCls.cbSize                := sizeOf (TWndClassEx);
  WndCls.lpszClassName := 'DelphiWindow';
  WndCls.style                  := cs_VRedraw or cs_HRedraw;
  WndCls.hInstance          := HInstance;
  WndCls.lpfnWndProc      := @WndProc;
  WndCls.cbClsExtra        := 0;
  WndCls.cbWndExtra        := 0;
  WndCls.hIcon                  :=0;
  WndCls.hIconSm              := LoadIcon (hInstance,
                                                 MakeIntResource ('MAINICON'));

  WndCls.hCursor              := LoadCursor (0, idc_Arrow);;
  WndCls.hbrBackground  := GetStockObject (white_Brush);
  WndCls.lpszMenuName    := nil;

  if RegisterClassEx (WndCls) = 0 then 
  begin
    MessageBox (0, 'Invalid  Class','Windows API', MB_OK);
    Exit;
  end;

  MainWnd := CreateWindowEx (
        Ws_Ex_OverlappedWindow,    
        WndCls.lpszClassName,        
       'Window From API',              
        ws_OverlappedWindow,      
        cw_UseDefault, 0,              
        cw_UseDefault, 0,              
        0,                                     
        0,                                    
        HInstance,                       
        nil);       

  ShowWindow (MainWnd, sw_ShowNormal);

  UpdateWindow(MainWnd);

  while GetMessage (Msg, 0, 0, 0) do 
  begin
        TranslateMessage (Msg);
        DispatchMessage (Msg);
  end;

END.
